/*
 * @Author: 生俊甫 1758142861@qq.com
 * @Date: 2024-06-06 18:04:21
 * @LastEditors: 生俊甫 1758142861@qq.com
 * @LastEditTime: 2024-06-16 14:17:55
 * @FilePath: /sjf/2024-project/2024_centos/source/log/logger.hpp
 * @Description:该文件是命令行输出的日志信息
/**
 * 简单日志宏的封装,还有单独的文件类的日志和错误的打印
 * 如需使用请查看log文件
 * 对于本宏主要分为了三个日志等级
 *     1.INF -->表示程序的正确执行,输出的是一般性的信息
 *     2.DBG -->表示输出详细的调试信息,主要用于开发和调试阶段
 *     3.ERR -->用于输出错误信息，也就是程序遇到了错误，但是可以正常执行,
 *              但是在本项目下也包含了WARN和FATAL的情况
 * 并且默认的等级是INF等级
 * 在调用的时候调用INF_LOG，DBG_LOG，ERR_LOG函数
*/
#pragma once

#include <iostream>
#include <ctime>

#define INF 0
#define DBG 1
#define ERR 2
#define DEFAULT_LOG_LEVEL INF

#define LOG(level,format,...) do{\
    if(DEFAULT_LOG_LEVEL > level) break;\
    time_t t = time(nullptr);\
    struct tm *it = localtime(&t);\
    char buff[32] = {0};\
    strftime(buff,31,"%H:%H:%S",it);\
    fprintf(stdout,"[%s:%s:%d]" format "\n", buff,__FILE__,__LINE__,##__VA_ARGS__);\
}while(0)

#define INF_LOG(format,...) LOG(INF,format,##__VA_ARGS__)
#define DBG_LOG(format,...) LOG(DBG,format,##__VA_ARGS__)
#define ERR_LOG(format,...) LOG(ERR,format,##__VA_ARGS__)
